import React from 'react';
import { inject, observer } from 'mobx-react';
import { withRouter } from 'react-router-dom';

import { Icon, Tools, Modal, Toast,Popover } from 'weaver-mobile';

const getLabel = Tools.getLabel;
const alert = Modal.alert;
const Item = Popover.Item;
@inject('blogAttentionStore')
@withRouter
@observer
export default class NewAttentionTool extends React.Component {
    constructor(props) {
        super(props);
        this.state={
            visible: false,
            selected: '',
        }
    }

    apply = () => {
        const { blogAttentionStore : { attentionOpt },attentionMeOpt } = this.props;
        let {attentionStatus, islower, userId, callback, type} = this.props;

        if (type === 'myfans') {
            if(attentionStatus === '4') {
                alert(getLabel(390696, '取消关注后需要重新申请才能再次关注'),getLabel(129256, '确定要取消吗？'),[
                    {text: getLabel(31129, '取消')},
                    {text: getLabel(33703, '确认'), onPress: () => {
                            type === 'myfans' ? attentionMeOpt({attentionMeStatus:attentionStatus, islower, userId},callback) : attentionOpt({attentionStatus, islower, userId},callback)
                        }}
                ])
            } else {
                attentionMeOpt({attentionMeStatus:attentionStatus, islower, userId},callback)
            }
        } else {
            if(attentionStatus === '1' || attentionStatus === '2') {
                alert(getLabel(390696, '取消关注后需要重新申请才能再次关注') ,getLabel(129256, '确定要取消吗？'),[
                    {text: getLabel(31129, '取消')},
                    {text: getLabel(33703, '确认'), onPress: () => {
                            attentionOpt({attentionStatus, islower, userId},callback)
                        }}
                ])
            } else if(attentionStatus === '4') {
                Toast.info(getLabel(384418,'已发送申请'), 1);
            }else {
                attentionOpt({attentionStatus, islower, userId},callback)
            }
        }
    }


    onSelect = (opt) => {
        this.setState({visible:false})
        const { blogAttentionStore : { cancelSpecialUsers,addSpecialUsers },userId,choseTab,callback } = this.props;
       if(this.props.type=='hisblog'){
           let cancel = this.props.cancelSpecialUser;
           let add = this.props.addSpecialUser;
           let goToSpecial= this.props.goToSpecial;
           if(opt.props.type==='apply'){
               this.apply();
           }else if(opt.props.type==='addSpecial'){
               alert(<span >{getLabel(514285,'特别关注') }</span>,<span>{getLabel(514289,'他发布微博时，你将收到新微博提醒')}</span>,[
                   {text:getLabel(514288,'特别关注管理') ,style:{"font-size": 16},onPress:()=>{
                           goToSpecial();
                       }},
                   {text:getLabel(33703, '确认'),style:{"font-size": 16},onPress: () => add({"specids":userId},callback)},
                   {text:getLabel(31129, '取消'),style:{"font-size": 16}}

               ])
           }else if(opt.props.type==='cancelSpecail'){
               alert(getLabel(514287,'取消特别关注后，将无法收到新微博提醒') ,getLabel(129256, '确定要取消吗？'),[
                   {text: getLabel(31129, '取消')},
                   {text: getLabel(33703, '确认'), onPress: () =>
                           cancel({"specids":userId},callback)
                   }
               ])
           }
       }else if(this.props.type=='org'){
        if(opt.props.type==='apply'){
            this.apply();
        }else if(opt.props.type==='addSpecial'){
            alert(<span >{getLabel(514285,'特别关注')}</span>,<span>{getLabel(514289,'他发布微博时，你将收到新微博提醒')}</span>,[
               
                {text: getLabel(33703, '确认'),style:{"font-size": 16},onPress: () => addSpecialUsers({"specids":userId,type:'org'},callback)},
                {text: getLabel(31129, '取消'),style:{"font-size": 16}}

            ])
        }else if(opt.props.type==='cancelSpecail'){
            alert(getLabel(514287,'取消特别关注后，将无法收到新微博提醒'),getLabel(129256, '确定要取消吗？'),[
                {text: getLabel(31129, '取消')},
                {text: getLabel(33703, '确认'), onPress: () =>
                        cancelSpecialUsers({"specids":userId,type:'org'},callback)
                }
            ])
        }
       }else{
           if(opt.props.type==='apply'){
               this.apply();
           }else if(opt.props.type==='addSpecial'){
               alert(<span >{getLabel(514285,'特别关注')}</span>,<span>{getLabel(514289,'他发布微博时，你将收到新微博提醒')}</span>,[
                   {text:getLabel(514288,'特别关注管理'),style:{"font-size": 16},onPress:()=>{
                           choseTab('',1);
                       }},
                   {text: getLabel(33703, '确认'),style:{"font-size": 16},onPress: () => addSpecialUsers({"specids":userId},callback)},
                   {text: getLabel(31129, '取消'),style:{"font-size": 16}}

               ])
           }else if(opt.props.type==='cancelSpecail'){
               alert(getLabel(514287,'取消特别关注后，将无法收到新微博提醒'),getLabel(129256, '确定要取消吗？'),[
                   {text: getLabel(31129, '取消')},
                   {text: getLabel(33703, '确认'), onPress: () =>
                           cancelSpecialUsers({"specids":userId},callback)
                   }
               ])
           }
       }

    };
    handleVisibleChange = (visible) => {
        this.setState({
            visible,
        });
         };


         render() {
        /**
         * attentionStatus
         1表示单向关注，按钮显示 取消关注。
         2表示双向关注，按钮显示 取消关注。
         3表示没有关注关系，且不是上下级关系。 按钮显示 申请关注。
         4表示没有关注关系，且不是上下级关系，且已发送申请。按钮显示 已发送申请。
         5表示没有关注关系，且是上下级关系。按钮显示 添加关注。
         isreceive==0,不允许申请关注
         */

        let {specialStatus,attentionStatus} = this.props;
         const items =[];



        if (this.props.type === 'myfans') {
            switch(attentionStatus) {
                case '1': items.push(<Item key="1" style={{"font-size": 13}}  type='apply'>{getLabel(26939,'添加关注')}</Item>);break;
                case '2': items.push(<Item key="1" style={{"font-size": 13}}  type='apply' >{getLabel(26941,'申请关注')}</Item>);break;
                case '3': items.push(<Item key="1" style={{"font-size": 13}}  type='noapply'>{getLabel(18659,'已申请')}</Item>);break;
                case '4': specialStatus=='2'?items.push(<Item key="1" style={{"font-size": 13}} type='cancelSpecail' >{getLabel(514283,'取消特别关注')}</Item>):items.push(<Item key="1" style={{"font-size": 13}} type='addSpecial'>{getLabel(514416,'设为特别关注') }</Item>);
                           items.push(<Item key="2"  style={{"font-size": 13}} type='apply'>{getLabel(26938,'取消关注')}</Item>);break;
                default: break;
            }
            } else if(this.props.type === 'share'){

            if(attentionStatus=='6'){
                attentionStatus = '1';
                specialStatus='2';
            }

            switch(attentionStatus) {
                case '1':specialStatus=='2'?items.push(<Item key="1" style={{"font-size": 13}} type='cancelSpecail'>{getLabel(514283,'取消特别关注')}</Item>):items.push(<Item key="4" type='addSpecial' style={{"font-size": 13}}>{getLabel(514416,'设为特别关注') }</Item>);
                    items.push(<Item key="2" style={{"font-size": 13}}  type='apply'>{getLabel(26938,'取消关注')}</Item>);break;
                case '2':specialStatus=='2'?items.push(<Item key="1" style={{"font-size": 13}} type='cancelSpecail'>{getLabel(514283,'取消特别关注')}</Item>):items.push(<Item key="4"  type='addSpecial' style={{"font-size": 13}} >{getLabel(514416,'设为特别关注') }</Item>);
                    items.push(<Item key="2"   style={{"font-size": 13}} type='apply'>{getLabel(26938,'取消关注')}</Item>);break;
                case '3': items.push(<Item key="1"   style={{"font-size": 13}} type='apply'>{getLabel(26941,'申请关注')}</Item>);break;
                case '4': items.push(<Item key="1"   style={{"font-size": 13}} type='noapply'>{getLabel(18659,'已申请')}</Item>);break;
                case '5': items.push(<Item key="1"  style={{"font-size": 13}}  type='apply'>{getLabel(26939,'添加关注')}</Item>);break;
                default: break;
            }
           }else {
                switch(attentionStatus) {
                    case '1':specialStatus=='2'?items.push(<Item key="1" style={{"font-size": 13}} type='cancelSpecail'>{getLabel(514283,'取消特别关注')}</Item>):items.push(<Item key="4" type='addSpecial' style={{"font-size": 13}}>{getLabel(514416,'设为特别关注') }</Item>);
                              items.push(<Item key="2" style={{"font-size": 13}}  type='apply'>{getLabel(26938,'取消关注')}</Item>);break;
                    case '2':specialStatus=='2'?items.push(<Item key="1" style={{"font-size": 13}} type='cancelSpecail'>{getLabel(514283,'取消特别关注')}</Item>):items.push(<Item key="4"  type='addSpecial' style={{"font-size": 13}} >{getLabel(514416,'设为特别关注') }</Item>);
                              items.push(<Item key="2"   style={{"font-size": 13}} type='apply'>{getLabel(26938,'取消关注')}</Item>);break;
                    case '3': items.push(<Item key="1"   style={{"font-size": 13}} type='apply'>{getLabel(26941,'申请关注')}</Item>);break;
                    case '4': items.push(<Item key="1"   style={{"font-size": 13}} type='noapply'>{getLabel(18659,'已申请')}</Item>);break;
                    case '5': items.push(<Item key="1"  style={{"font-size": 13}}  type='apply'>{getLabel(26939,'添加关注')}</Item>);break;
                    default: break;
                }
            }
        return (
            <Popover mask
                     overlayClassName="fortest"
                     overlayStyle={{ color: 'currentColor' }}
                     visible={this.state.visible}
                     overlay={items}
                     align={{
                         overflow: { adjustY: 0, adjustX: 0 },
                         offset: [-6, -4],
                     }}
                     onVisibleChange={this.handleVisibleChange}
                     onSelect={this.onSelect}
            >
            <div className="blog-list-line-ops-newattention" >
                <Icon type='more-3' size='xxs' style={{"margin-top":10}}/>
            </div>
            </Popover>
        )
    }
}